package com.yc.d0316;

import com.google.gson.Gson;
import com.yc.util.DBHelper;

import javax.servlet.*;
import javax.servlet.http.*;
import javax.servlet.annotation.*;
import java.io.IOException;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

@WebServlet(name = "QueryBookServlet", value = "/QueryBookServlet.s")
public class QueryBookServlet extends HttpServlet {
    @Override
    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        final String bookname = request.getParameter("bookname");
        final String bookauthor = request.getParameter("bookauthor");

        final String pageSize = request.getParameter("pageSize");
        final String currentPage = request.getParameter("currentPage");
        int size = Integer.valueOf(pageSize);
        int page=Integer.valueOf(currentPage);
        int begin = size * (page-1);
        //说明：该案例中的SQL直接写在Servlet中，项目中不允许
        String sql = "select * from bm_book where status=1";

        //组合条件查询
        List<Object> params = new ArrayList<>();
        if(bookname !=null&&bookname.trim().isEmpty()==false){
            sql+=" and bookname like ? ";
            params.add("%" + bookname +"%");
        }
        if (bookauthor !=null && bookauthor.trim().isEmpty()==false){
            sql +=" and bookauthor like ? ";
            params.add("%" + bookauthor + "%");
        }
        //查询总行数
        final long total = DBHelper.count(sql,params.toArray());

        params.add(begin);
        params.add(size);

        //查询当前页的数据
        final List<Map<String, Object>> data=
                DBHelper.selectListMap(sql + " limit ?, ?",params.toArray());

        Map<String, Object> result = new HashMap<>();
        result.put("data",data);
        result.put("total",total);
        final String json = new Gson().toJson(result);
        response.getWriter().append(json);
    }

    @Override
    protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        doGet(request,response);
    }
}
